#pragma once
#include<iostream>
using namespace std;

template<class T>
struct list_node
{
	T _data;
	list_node<T>* _next;
	list_node<T>* _prev;
};

template<class T>
struct list_iterator
{

};

template<class T>
class list
{
	typedef list_node<T> Node;
public:
	list()
	{
		_head = new node;
		_head->_next = _head;
		_head-> _prev = _head;
	}

	void push_back(const T& x)
	{
		Node* newnode = new Node(x);
		Node* tail = _head->_prev;

		tail->next = newnode;
		newnode->_prev = tail;
		newnode->next = _head;
		_head->prev = newnode;
	}
	
private:
	Node* _head;
};


int main()
{
	return 0;
}